using System;
using PhillyCodeCamp.Domain.Validation;
using PhillyCodeCamp.Services;

namespace PhillyCodeCampSpecs.Helpers
{
    public static class ObjectMother
    {
        public static IBusinessRule<IPerson> CreateFailingBusinessRule ()
        {
            return new PersonBusinessRuleWithFailure();
        }

        public static IBusinessRule<IPerson> CreateFailingBusinessRule2()
        {
            return new PersonBusinessRuleWithFailure();
        }
        public static IBusinessRule<IPerson> CreateSucceedingBusinessRule()
        {
            return new PersonBusinessRuleWithSuccess();
        }

        public static IPerson CreateEmptyPerson()
        {
            return new Person("", "", "", 0);
        }

        public static ITaxRateService CreateTaxRateService(
            decimal stateTaxRate, decimal usTaxRate)
        {
            return new StubTaxRateService(stateTaxRate, usTaxRate, 0, false);
        }
        public static ITaxRateService CreateTaxServiceWith100PercentLatePenalty(
            decimal stateTaxRate, decimal usTaxRate)
        {
            return new StubTaxRateService(stateTaxRate, usTaxRate, 1.0M, true);
        }
    }
}